perm filename PANIC.SOS[HAL,HE] blob
sn#133579 filedate 1974-12-02 generic text, type T, neo UTF8
00100 COMMENT ⊗ VALID 00007 PAGES
00200 C REC PAGE DESCRIPTION
00300 C00001 00001
00400 C00002 00002 .FIGS←TRUE
00500 C00010 00003 .device xgp
00600 C00011 00004 .NEXT PAGE
00700 C00014 00005 .ADJUST COMPACT
00800 C00015 00006 .REQUIRE "MINTRO.PUB" SOURCE_FILE <<MEMO25(2) Introduction>>
00900 C00018 00007 .PORTION CONTENTS
01000 C00022 ENDMK
01100 C⊗;
00100 .FIGS←TRUE;
00200 .STD_SPREAD ← 1;
00300
00400 .<<PUB STATEMENTS>>
00500
00600 .TURN ON "∞π↑↓[]{_α#←→&∂";
00700 .TURN OFF TAB;
00800 .STD_PREFACE← 2*STD_SPREAD - 1;
00900 .SPREAD ← STD_SPREAD ;
01000 .PREFACE STD_PREFACE ;
01100 .NOFILL; PREFACE SPREAD-1; FILL;
01200
01300 .MACRO UNFILL ⊂BEGIN NOFILL;TURN OFF "←→";PREFACE SPREAD-1;SKIP 2-SPREAD;GROUP⊃;
01400 .MACRO MATRIX ⊂BEGIN NOFILL PREFACE 0 SKIP SPREAD GROUP⊃
01500 .MACRO REFILL ⊂END; SKIP 2-SPREAD; CONTINUE⊃;
01600 .MACRO MAYBREAK ⊂APART;GROUP;⊃;
01700 .MACRO BULL ⊂ONCE; FLUSH LEFT⊃;
01800 .MACRO REPART ⊂END; SKIP 2-SPREAD; APART⊃;
01900 .MACRO COMT(X) ⊂BEGIN FILL;INDENT X,X;PREFACE 0;}%4{⊃
02000
02100 .COUNT SECTION FROM 1 TO 99 PRINTING ⊂SECTION⊃;
02200 .COUNT SUBSEC FROM 0 TO 99 IN SECTION PRINTING "!.1";
02300 .COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
02400 .COUNT FOOTNOTE INLINE FROM 1 TO 9 IN PAGE;
02500
02600 .MACRO NEWSEC(TITLE,ID) ⊂
02700 .NEXT SECTION!;
02800 .IF PICLIN≠NULL THEN ALLPIC;
02900 .SECNAME←NULL;
03000 .SSECNAME←NULL;
03100 .SSSNUM←NULL
03200 .NEXT SUBSEC;FIGURE←0;TABLE←0;
03300 .SECNAME←"TITLE";
03400 .SSECNAME←"ID";
03500 .SKIP TO COLUMN 1; BEGIN CENTER;
03600 %5{SECID} {SECTION!}%*
03700 %6{SECNAME}%*
03800 .END
03900 .SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
04000 .BEGIN
04100 .NEXT PAGE
04200 {SECID}→PAGE
04300 .END
04400
04500 {SECTION!} TITLE →{PAGE!}
04600 .⊃
04700 .SECNAME←"TITLE";⊃
04800
04900
05000
05100 .MACRO NEWSS(TITLE,ID,LAB) ⊂
05200 .NEXT SUBSEC!;
05300 .IF PICLIN≠NULL THEN ALLPIC;
05400 .SSSNUM←SUBSEC!
05500 .NEXT SUBSUBSEC;
05600 .IF LINES≤10*SPREAD THEN NEXT PAGE ELSE SKIP 4*SPREAD;
05700 .SSECNAME←"ID";
05800 .IF SSECNAME=NULL THEN SSECNAME←"TITLE";
05900 %5{SUBSEC!} TITLE%*
06000 .SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
06100 .BEGIN
06200 .NEXT PAGE
06300 {SECID}→PAGE
06400 .END
06500 {SUBSEC!} TITLE →{PAGE!}
06600 .⊃
06700 .⊃
06800
06900 .MACRO NEWSSS(TITLE,LAB) ⊂
07000 .NEXT SUBSUBSEC!;
07100 .IF PICLIN≠NULL THEN ALLPIC;
07200 .SSSNUM←SUBSUBSEC!
07300 .IF LINES≤8*SPREAD THEN NEXT PAGE ELSE SKIP 2*SPREAD;
07400 %4{SUBSUBSEC!} TITLE%*
07500 .BREAK
07600 .SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
07700 .BEGIN
07800 .NEXT PAGE
07900 {SECID}→PAGE
08000 .END
08100 {SUBSUBSEC!} TITLE →{PAGE!}
08200 .⊃
08300 .⊃
08400
08500
08600 .COUNT EQUATION INLINE IN SECTION PRINTING "!.1"
08700
08800 .MACRO NEWEQ⊂
08900 .NEXT EQUATION!;TURN ON "→";"→[Eq. ";EQUATION!;"]";TURN OFF "→";⊃
09000
09100 .MACRO EQREF(LBL)⊂"Equation ";EQUATION! LBL⊃
09200 .MACRO SECREF(LBL)⊂"Chapter ";SECTION! LBL⊃
09300 .MACRO SSREF(LBL)⊂"Section ";SUBSEC! LBL ⊃
09400 .MACRO SSSREF(LBL)⊂"subsection ";SUBSUBSEC! LBL⊃
09500 .MACRO APREF(LBL)⊂"Appendix ";SECTION! LBL⊃
09600 .MACRO FIGREF(LBL)⊂"Figure ";FIGURE LBL⊃
09700 .MACRO TABREF(LBL)⊂"Table "; LBL⊃
09800 .AT NULL ⊂IF FILLING THEN
09900 . START BREAK;
10000 . IF LINES<2*SPREAD+1 THEN NEXT PAGE END
10100 . ELSE SKIP SPREAD⊃;
10200
10300 .RECURSIVE MACRO STOREPIC(TITLE,LINES,TEMP) ⊂START
10400 .PICLIN←PICLIN&" "[1 TO 2-LENGTH("LINES")]&"LINES";
10500 .PICNUM←PICNUM&" "[1 TO 4-LENGTH(TEMP)]&TEMP;
10600 .PICTLEN←PICTLEN&" "[1 TO 2-LENGTH(LENGTH("TITLE"))]&LENGTH("TITLE");
10700 .PICTIT←PICTIT&"TITLE";
10800 .END⊃
10900
11000 .MACRO NEWFIG(TITLE,εLINES,LABEL) ⊂
11100 .FIGURE←FIGURE+1; LABEL TEMP←SECTION&"."&FIGURE; }Figure {TEMP;
11200 .STOREPIC(|TITLE|,LINES,TEMP) ⊃;
11300
11400 .MACRO MAKEFIG(TITLE,εLINES,LABEL) ⊂
11500 .FIGURE←FIGURE+1;LABEL TEMP←SECTION&"."&FIGURE;
11600 .STOREPIC(|TITLE|,LINES,TEMP) ⊃;
11700
11800 .PICLIN←PICNUM←PICTLEN←PICTIT←NULL
11900 .MACRO SMALLPIC⊂⊃
12000 .MACRO ALLPIC⊂⊃
12100
12200 .MACRO NEWTABLE(TITLE,LABEL)⊂
12300 .TABLE←TABLE+1; LABEL TEMP←SECTION&"."&TABLE;
12400 .BEGIN NOFILL CENTER GROUP
12500
12600 Table {TEMP}
12700
12800 TITLE
12900 .⊃;
13000
13100 .IF FIGS THEN START
13200
13300 .MACRO PLACEPIC ⊂BEGIN CENTER PREFACE SPREAD-1
13400 .A←PICLIN[1 TO 2]; B←PICNUM[1 TO 4];
13500 .C←PICTLEN[1 TO 2]; D←PICTIT[1 TO C];
13600 .PICLIN←PICLIN[3 TO ∞]; PICNUM←PICNUM[5 TO ∞];
13700 .PICTLEN←PICTLEN[3 TO ∞]; PICTIT←PICTIT[C+1 TO ∞];
13800 .GROUP SKIP A;
13900 Figure {B}
14000 {D}
14100 .SKIP 2*SPREAD;
14200 .END⊃
14300
14400 .RECURSIVE MACRO RSPIC ⊂
14500 .IF LINES-3*SPREAD≥PICLIN[1 TO 2] THEN PLACEPIC
14600 .ELSE START
14700 . TLIN←TLIN&PICLIN[1 TO 2]; PICLIN←PICLIN[3 TO ∞];
14800 . TNUM←TNUM&PICNUM[1 TO 4]; PICNUM←PICNUM[5 TO ∞];
14900 . C←PICTLEN[1 TO 2];
15000 . TTLEN←TTLEN&C; PICTLEN←PICTLEN[3 TO ∞];
15100 . TTIT←TTIT&PICTIT[1 TO C]; PICTIT←PICTIT[C+1 TO ∞];
15200 . END;
15300 .IF PICLIN≠NULL THEN RSPIC⊃
15400
15500 .RECURSIVE MACRO SMALLPIC ⊂
15600 .TLIN←TNUM←TTLEN←TTIT←NULL;
15700 .RSPIC;
15800 .PICLIN←TLIN; PICNUM←TNUM; PICTLEN←TTLEN; PICTIT←TTIT;
15900 .IF LINES<2*SPREAD-1 THEN NEXT PAGE ⊃
16000
16100 .RECURSIVE MACRO ALLPIC ⊂
16200 .IF PICLIN≠NULL THEN SMALLPIC;;
16300 .IF PICLIN≠NULL THEN BEGIN PLACEPIC; ALLPIC END ⊃
16400
16500 .AT NULL ⊂IF FILLING THEN
16600 . START BREAK;
16700 . IF PICLIN≠NULL THEN SMALLPIC;
16800 . IF LINES<2*SPREAD+1 THEN NEXT PAGE END
16900 . ELSE SKIP SPREAD⊃;
17000
17100 .BEFORE PAGE ⊂STANDARD TITLES;
17200 . IF PICLIN≠NULL THEN SMALLPIC ⊃
17300
17400 .END COMMENT PICTURE MACROS;
17500
17600
17700
17800
17900 .BOTTOM←50;
18000 .MACRO FULL⊂BOTTOM-3*SPREAD⊃
18100 .MACRO HALF⊂BOTTOM/2-3*SPREAD⊃
18200 .MACRO THIRD⊂BOTTOM/3-3*SPREAD⊃
18300
18400 .SECNAME←NULL
18500
18600
00100 .device xgp
00200 .IF XCRIBL THEN FONT 1 "BASL30[HAL,HE]"
00300 .IF XCRIBL THEN FONT 4 "BASI30[HAL,HE]"
00400 .IF XCRIBL THEN FONT 5 "BASB30"
00500 .IF XCRIBL THEN FONT 6 "BDR40"
00600 .IF XCRIBL THEN FONT 7 "LPT"
00700
00800 .IF XCRIBL THEN START
00900 .!xgplftmar← 200
01000 .END
01100 .PAGE FRAME 53 HIGH 80 WIDE;
01200 .TITLE AREA HEADING LINES 1 TO 4 CHARS 1 TO 80;
01300 .AREA TEXT LINES 5 TO 53 CHARS 1 TO 80;
01400 .TURN ON "%\"
01500 .TABS 17
01600 .SECID←"CHAPTER";
01700 .SECNAME←NULL
01800 .COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
01900 .IF XCRIBL THEN SELECT 1
02000
00100 .NEXT PAGE
00200 .SSECNAME←NULL;
00300 .PORTION TITLEPAGE
00400 .BEGIN NOFILL;turn on "↑";
00500 .AREA TEXT LINES 1 TO 53 CHARS 1 TO 80
00600 .NEXT PAGE
00700 .GROUP SKIP 1
00800 %1STANFORD ARTIFICIAL INTELLIGENCE LABORATORY →NOVEMBER 1974
00900 MEMO AIM-243
01000 .GROUP SKIP 2
01100 COMPUTER SCIENCE DEPARTMENT
01200 REPORT CS-456
01300 .GROUP SKIP 4
01400 .NOFILL CENTER
01500 %6AL, A Programming System for Automation
01600 .GROUP SKIP 4
01700 %1Raphael Finkel, Russell Taylor, Robert Bolles, Richard Paul, Jerome Feldman↑*
01800
01900
02000 .GROUP SKIP 5
02100 .FILL ADJUST COMPACT
02200 .NARROW 8,8
02300 AL is an high-level programming system for specification of manipulatory procedures
02400 such as assembly of an object from parts. Currently being implemented
02500 as a successor to our WAVE system, AL includes an ALGOL-like source language,
02600 a translator for converting programs into runnable code, and a runtime system
02700 for controlling the manipulators and other devices. The source language includes
02800 advanced features for describing individual motions of manipulators, for using
02900 sensory information, and for describing describing assembly algorithms in terms
03000 of common domain-specific primitives.
03100 .WIDEN
03200 .NOFILL SKIP TO LINE 37
03300 .FILL
03400 ∞_→#
03500 .BREAK
03600 %4↑* Jerome Feldman is now at the University of Rochester.
03700
03800 This research was supported in part by the
03900 National Science Foundation under contract No. GIα-42906 and in part by
04000 the Advanced Research
04100 Projects Agency of the Office of Defense under Contract No. DAHC-15-73-C-0435.
04200
04300 The views and conclusions in this document are those of the authors and
04400 should not be interpreted as necessarily representing the official policies,
04500 either expressed or implied, of the
04600 funding agencies.
04700
04800 Reproduced in the USA. Available from the National Technical Information
04900 Service, Springfield, Virginia 22151.%*
05000 .END
05100
00100 .ADJUST COMPACT
00200 .SECNAME←NULL
00300 .SSECNAME←NULL
00400 .SSSNUM←NULL
00500 .INSERT CONTENTS
00600 .PORTION BODY;
00700 .COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
00800 .EVEN HEADING(Page {PAGE!},{SSECNAME},{SSSNUM});
00900 .ODD HEADING({SSSNUM},{SSECNAME},Page {PAGE!});
01000 .NEXT PAGE
00100 .REQUIRE "MINTRO.PUB" SOURCE_FILE; <<MEMO25(2) Introduction>>
00200 .REQUIRE "MGOALS.PUB" SOURCE_FILE; <<MEMO25(3:6) Goals>>
00300 .REQUIRE "MSYSOL.PUB" SOURCE_FILE; <<MEMO25(7),61(2) System outline>>
00400 .REQUIRE "MUSER.PUB" SOURCE_FILE; <<MEMO8(2) User features>>
00500 .REQUIRE "MDATST.PUB" SOURCE_FILE; <<MEMO61(8:11) Data structures>>
00600 .REQUIRE "MMOTNS.PUB" SOURCE_FILE; <<MEMO61(12:17) Motion specs>>
00700 .REQUIRE "MGRAPH.PUB" SOURCE_FILE; <<graph structures (subsection) >>
00800 .REQUIRE "MCTRST.PUB" SOURCE_FILE; <<MEMO61(3:7) Control structures>>
00900 .REQUIRE "MCTCST.PUB" SOURCE_FILE; <<MEMO61(18,19),63(2:7) Compile time constructs>>
01000 .REQUIRE "MLIBRT.PUB" SOURCE_FILE; <<MEMO63(8) Library routines>>
01100 .REQUIRE "MVHL.PUB" SOURCE_FILE; <<MEMO64 Very high level>>
01200 .REQUIRE "MRUNTM.PUB" SOURCE_FILE; <<MEMO7 Runtime overview>>
01300 .REQUIRE "MEXTEN.PUB" SOURCE_FILE; <<MEMO9 Extensions>>
01400 .REQUIRE "MBIB.PUB" SOURCE_FILE; <<MEMO10 Bibliography>>
01500
01600 .PORTION APPENDIX
01700 .SECID←"APPENDIX";
01800 .SEND CONTENTS ⊂
01900
02000 APPENDICES
02100 .⊃
02200 .COUNT SECTION FROM 1 TO 99 PRINTING "I";
02300 .COUNT SUBSEC FROM 0 TO 9 IN SECTION PRINTING "!.1";
02400 .COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
02500 .REQUIRE "MDIALG.PUB" SOURCE_FILE; <<MEMO8(3) Dialog>>
02600 .REQUIRE "MXMPLS.PUB" SOURCE_FILE; <<XMPLES Examples: appendix>>
02700 .REQUIRE "MRTAPP.PUB" SOURCE_FILE; <<RUNTIM Runtime details: appendix>>
02800
00100 .PORTION CONTENTS
00200 .COUNT PAGE FROM 2 PRINTING "i";
00300 .SSECNAME←"FOREWORD";
00400 .SSSNUM ← NULL;
00500 .SECNAME←"FOREWORD";
00600 .NEXT PAGE
00700 This document describes the new hand language, AL. It is
00800 not intended to be a final language specification or a user's manual.
00900 Rather, it is a working document presenting a number of related
01000 ideas concerning a system for programmable automation. These ideas
01100 cover a broad range of topics: arm servoing, parallel processing,
01200 assembly world modelling, strategists, and language design. We have
01300 tried to combine these into a coherent system. However, as you read
01400 this document you will notice that some topics have been explored
01500 more than others, some explanations contain more detail than others,
01600 and some questions are left unanswered. Various portions of the
01700 system have already been implemented.
01800
01900 Interested persons unfamiliar with the background for this work
02000 will find it useful to read %4The Use of Sensory Feedback in a
02100 Programmable Assembly System%* [Bolles and Paul].
02200
02300 We would like to thank those people who have made
02400 numerous suggestions and have helped implement various parts of the
02500 system.
02600 In particular, we would to thank Bertrand Meyer, who
02700 implemented the scanner and parser, Botond Eross, who is
02800 implementing the PDP11 runtime monitor,
02900 Bruce Baumgart, who assisted with the illustrations,
03000 and Larry Tesler, whose document preparation program PUB was used
03100 to prepare this paper.
03200 We also wish to thank D. Whitney, J. Nevins, and D. Killoran of
03300 Draper Labs and W. Park of Stanford Research Institute for their
03400 helpful criticisms and suggestions.
03500
03600
03700 During the period in which the work reported here was performed,
03800 Russ Taylor was supported in part by a grant from the Alcoa Foundation,
03900 Raphael Finkel was supported by a NSF fellowship, and Robert Bolles
04000 was supported in part by the Hertz Foundation. We would like to
04100 thank all these agencies for their kind assistance.
04200
04300 The English language has no genderless personal pronoun; without
04400 any implication of sexism we use arbitrary forms in its place.
04500
04600
04700 .SSECNAME←"TABLE OF CONTENTS";
04800 .SECNAME←"TABLE OF CONTENTS";
04900 .NEXT PAGE
05000 .INDENT 0
05100 .NOFILL
05200 .TURN ON "∞→"
05300 CHAPTER →PAGE
05400 .RECEIVE
05500